package com.smedi.ismedi.organization.core.domain.service;

import com.smedi.ismedi.organization.core.domain.aggregatemodel.ProjectOrganization;

import java.util.List;
import java.util.Set;

public interface ProjectOrganizationDomainService {
    ProjectOrganization save(ProjectOrganization data);

    List<ProjectOrganization> queryAll();

    void delete(Long projectOrganizationId);

    List<ProjectOrganization> getProjectOrganizationChildrenByList(Long projectOrganizationId);

    List<ProjectOrganization> getProjectOrganizationChildrenByTree(Long projectOrganizationId);

    Boolean validateProjectOrganization(Long projectOrganizationId);

    Boolean duplicateFullName(String fullName, Long projectOrganizationId, Long projectId);

    Boolean duplicateShortName(String shortName, Long projectOrganizationId, Long projectId);

    Boolean duplicateCode(String code, Long projectOrganizationId, Long projectId);

    Boolean validateProjectOrganizationCanBeConfigOrg(Long projectOrganizationId);

    Boolean validateProjectOrganizationIsExternalUnit(Long projectOrganizationId);

    ProjectOrganization getProjectOrganizationByProjectOrganizationId(Long projectOrganizationId);

    void saveProjectOrganizationDisplayOrder(Long projectOrganizationId, Integer displayOrder);
}
